long isqrt(long x)  {  
         register unsigned long op, res, one;  
      
        op = x;  
        res = 0;  
      
        /* "one" starts at the highest power of four <= than the argument. */  
        one = 1 << 30;  /* second-to-top bit set */  
        while (one > op) one >>= 2;  
      
        while (one != 0) {  
            if (op >= res + one) {  
                op -= res + one;  
                res += one << 1;  // <-- faster than 2 * one  
            }  
            res >>= 1;  
            one >>= 2;  
        }  
        return res;  
}  

long power (long input, int e) {
     int i;
     long result = 1;
     for (i=1; i <= e; ++i) result *= input;
     return result;
}

int usr_main (int input) {
     long root;
     if (input%2==0) {
          root = isqrt((long) input); 
     } else { 
          root = power(input, 3); 
     }
     return (int) root;
}
